home *** CD-ROM | disk | FTP | other *** search
- unit UCAniIconEdit;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- ExtDlgs, ExtCtrls, StdCtrls, UCAniIcon, DsgnIntf;
-
- type
- TAniIconEditorDialog = class(TForm)
- OKButton: TButton;
- CancelButton: TButton;
- GroupBox1: TGroupBox;
- ImagePanel: TPanel;
- ImagePaintBox: TPaintBox;
- Load: TButton;
- Save: TButton;
- Clear: TButton;
- OpenDialog: TOpenPictureDialog;
- SaveDialog: TSavePictureDialog;
- Timer1: TTimer;
- procedure ClearClick(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- procedure LoadClick(Sender: TObject);
- procedure SaveClick(Sender: TObject);
- procedure Timer1Timer(Sender: TObject);
- private
- { Private declarations }
- Icon: TAniIcon;
- public
- { Public declarations }
- procedure Reset;
- end;
-
- TAniIconPropertyEditor = class (TClassProperty)
- public
- function GetValue: String; override;
- function GetAttributes: TPropertyAttributes; override;
- procedure SetValue (const Value: string); override;
- procedure Edit; override;
- end;
-
- implementation
-
- {$R *.DFM}
-
- { TAniIconEditorDialog }
-
- procedure TAniIconEditorDialog.FormCreate(Sender: TObject);
- begin
- Icon := TAniIcon.Create;
- Save.Enabled := False;
- end;
-
- procedure TAniIconEditorDialog.FormDestroy(Sender: TObject);
- begin
- Icon.Free;
- end;
-
- procedure TAniIconEditorDialog.ClearClick (Sender: TObject);
- begin
- Timer1.Enabled := False;
- Save.Enabled := False;
- Clear.Enabled := False;
- Icon.Clear;
- ImagePaintBox.Invalidate;
- end;
-
- procedure TAniIconEditorDialog.LoadClick (Sender: TObject);
- begin
- if OpenDialog.Execute then begin
- Icon.LoadFromFile (OpenDialog.Filename);
- Reset;
- end;
- end;
-
- procedure TAniIconEditorDialog.Reset;
- begin
- Icon.BackgroundColor := ImagePaintBox.Color;
- ImagePaintBox.Invalidate;
- Save.Enabled := not Icon.Empty;
- Clear.Enabled := not Icon.Empty;
- Timer1.Enabled := not Icon.Empty;
- end;
-
- procedure TAniIconEditorDialog.SaveClick(Sender: TObject);
- begin
- if (Icon.Empty = False) and SaveDialog.Execute then
- Icon.SaveToFile (SaveDialog.Filename);
- end;
-
- procedure TAniIconEditorDialog.Timer1Timer(Sender: TObject);
- var
- r: TRect;
- begin
- if not Icon.Empty then begin
- Icon.Animate;
- r := Rect (0, 0, Icon.Width, Icon.Height);
- OffsetRect (r, (ImagePaintBox.Width - Icon.Width) div 2,
- (ImagePaintBox.Height - Icon.Height) div 2);
- Icon.Draw (ImagePaintBox.Canvas, r);
- end;
- end;
-
- { TAniIconPropertyEditor }
-
- function TAniIconPropertyEditor.GetValue: String;
- var
- Icon: TAniIcon;
- begin
- Icon := TAniIcon (GetOrdValue);
- if Icon.Empty then Result := '(None)' else Result := '(' + Icon.ClassName + ')';
- end;
-
- function TAniIconPropertyEditor.GetAttributes: TPropertyAttributes;
- begin
- Result := [paDialog];
- end;
-
- procedure TAniIconPropertyEditor.SetValue (const Value: string);
- begin
- if Value = '' then SetOrdValue (0);
- end;
-
- procedure TAniIconPropertyEditor.Edit;
- begin
- with TAniIconEditorDialog.Create (Nil) do try
- Icon.Assign (TAniIcon (GetOrdValue)); Reset;
- if ShowModal = mrOK then TAniIcon (GetOrdValue).Assign (Icon);
- finally
- Free;
- end;
- end;
-
- initialization
- RegisterPropertyEditor (TypeInfo (TAniIcon), Nil, '', TAniIconPropertyEditor);
- end.
-